package com.cai.io.homework;

import java.io.*;

/**
 * 将当前目录下的所有文件都复制一份，复制的文件命名为:原
 * 文件名_cp.后缀
 * 比如原文件为:test.dat
 * 复制后的文件为:test_cp.dat
 */
public class Test1 {
    public static void main(String[] args) throws IOException {
        File file = new File("./");//路径/文件
        getAllFiles(file);
    }
    //获取子项中含有的文件
    public static void getAllFiles(File file) throws IOException {
        File[] files = file.listFiles();
        for (int i = 0; i < files.length; i++) {
            if (files[i].isFile()) { //获取文件
                String oldFileName = files[i].getName();
                System.out.println(oldFileName);//文件名称
                fileCopy(oldFileName, setFileName(oldFileName));
            }
        }
    }
    //根据旧文件名生成新文件名
    public static String setFileName(String oldFileName){
        int lastPointIndex = oldFileName.lastIndexOf("."); //获取最后一个点的位置
        String start = oldFileName.substring(0, lastPointIndex) + "_cp"; //更改前缀
        String end = oldFileName.substring(lastPointIndex); //获取后缀
        String newFileName = start + end;//结合名称 新文件名称
        System.out.println("新文件名称：" + newFileName);
        return newFileName;
    }
    //复制文件
    public static void fileCopy(String oldFileName,String newFileName) throws IOException {
        //旧 文件输入流
        FileInputStream fis = new FileInputStream(oldFileName);
        BufferedInputStream bis = new BufferedInputStream(fis);
        //新 文件输出流
        FileOutputStream fos = new FileOutputStream(newFileName);
        BufferedOutputStream bos = new BufferedOutputStream(fos);
        int b;
        while ((b = bis.read()) != -1) {  //读取
            bos.write(b);//写入
        }
        bis.close();  //缓冲输入流关闭
        bos.flush(); //清空缓冲区
        bos.close(); //缓冲输出流关闭
        System.out.println("文件复制成功！");
    }
}
